home *** CD-ROM | disk | FTP | other *** search
/ Aminet 31 / Aminet 31 (1999)(Schatztruhe)[!][Jun 1999].iso / Opus5.5 / ARexx.lha / ARexx / ArcAdd.dopus5 < prev    next >
Text File  |  1995-09-24  |  5KB  |  200 lines

  1. /*
  2.   $VER: ArcAdd.dopus5 1.3 (20.9.95)
  3.  
  4.   Original Arexx scripts for DOpus4 by John Crookshank.
  5.       MultiLZH1.dopus - Add files to list
  6.       MultiLZH2.dopus - Archive files in list
  7.  
  8.   Updated for DOpus 5.11 and combined into one script by D.Clarke.
  9.  
  10.   Add to button/toolbar as follows:
  11. ---------------------------------------------------------------
  12.   Arexx   DOpus5:Arexx/ArcAdd.dopus5 {Ql} {Qp} [ARC | EDIT]
  13.  
  14.   Items checked:  Run Asynchronously
  15. ---------------------------------------------------------------
  16.   where: ARC = archive list contents, if ARC is not present, action will
  17.                be to add selected items to list for archiving.
  18.          EDIT = calls 'ed' to edit the archive list.
  19.  
  20. ***** NOTE: If {Ql} and {Qp} are not present as above, this script will
  21.             _NOT_ work.
  22.  
  23. ===============================================================
  24.   Search for line below 'Copy SYS:Useful/'||archiver||' T:' and edit to reflect
  25.   your path to LhA, ZIP,  and LZX.
  26. ===============================================================
  27.  
  28. History: 1.0 - First version.
  29.          1.1 - Added ability to choose LhA/LZX archiver.
  30.              - Added check for source lister when archiving list.
  31.              - Some grammatical corrections.
  32.          1.2 - Added simple edit function. ie. it calls 'ed'.
  33.              - Removed check for source lister.
  34.          1.3 - Now uses STEMs for getting files/dirs
  35.              - Can now choose ZIP archiver, (mainly for dumping things
  36.                to an I*M).
  37.  
  38. */
  39.  
  40. plural. = 's'
  41. plural.1 = ''
  42. thing = 1
  43. LF = '0a'x
  44.  
  45. options results
  46. parse arg handle Port func .
  47.  
  48. if upper(func) = 'EDIT' then
  49.   do
  50.     if exists('T:infiles.txt') then address command 'ed T:infiles.txt'
  51.     exit
  52.   end
  53.  
  54. return = Open(infile,"T:infiles.txt","R")
  55. if return > 0 then do
  56.   do until EOF(infile)
  57.     name.thing = ReadLn(infile)
  58.     thing = thing + 1
  59.   end
  60.   return = close(infile)
  61.   if upper(func) = 'ARC' then
  62.     do
  63.       thing = thing - 2
  64.       signal AddThem
  65.     end
  66.   else
  67.     thing = thing - 1
  68. end
  69.  
  70. address value port
  71. lister query handle selfiles stem files.
  72. lister query handle seldirs stem dirs.
  73.  
  74. if files.count = 0 & dirs.count = 0 then do
  75.   dopus request '"No files/dirs selected!" OK'
  76.   exit
  77. end
  78.  
  79. lister query handle path
  80. intpath = RESULT
  81. path = strip(intpath,B,'"')
  82.  
  83. if left(path,8) = 'Ram Disk' then do
  84.   parse var path ':' rest
  85.   path = 'RAM:'||rest
  86. end
  87.  
  88. indices = 0
  89. if files.count ~= 0 then do
  90.   do until indices = files.count
  91.     say files.indices
  92.     lister select handle '"'||files.indices||'"' off
  93.     lister refresh handle
  94.     name.thing = '"'||path||strip(files.indices,B,'"')||'"'
  95.     indices = indices + 1
  96.     thing = thing + 1
  97.   end
  98. end
  99.  
  100. indices = 0
  101. if dirs.count ~= 0 then do
  102.   do until indices = dirs.count
  103.     say dirs.indices
  104.     lister select handle '"'||dirs.indices||'"' off
  105.     lister refresh handle
  106.     name.thing = '"'||path||strip(dirs.indices,B,'"')||'/#?'
  107.     indices = indices + 1
  108.     thing = thing + 1
  109.   end
  110. end
  111.  
  112. address command
  113.  
  114. return = open(outfile,"T:infiles.txt","W")
  115.  
  116. counter = 1
  117. do until counter = thing
  118.   return = WriteLn(outfile,name.counter)
  119.   counter = counter + 1
  120. end
  121. return = Close(outfile)
  122.  
  123. address value port
  124. thing = thing - 1
  125. mssg = thing || ' item' || plural.thing || ' now in the archive list.'
  126. dopus request '"'mssg'"' "OK"
  127. exit
  128.  
  129.  
  130. AddThem:         /* Time to Archive */
  131.  
  132. if thing < 1|left(name.1,1) ~='"' then do
  133.   address value port
  134.   dopus request '"No input files. You must first add files to the list." OK'
  135.   exit
  136.   end
  137.  
  138. address value port
  139.  
  140. lister query handle path
  141. path = strip(result,B,'"')
  142. if left(path,8) = 'Ram Disk' then do
  143.   parse upper var path ':' rest
  144.   path = 'RAM:'||rest
  145. end
  146.  
  147. getname:
  148. dopus getstring '"Archive filename:" 40 "" OK|Cancel'
  149. outname = RESULT
  150.  
  151. if outname = ''|outname = 'RESULT'|outname = '1' then do
  152.   dopus request '"An output filename is required!" OK|Cancel'
  153.   if RESULT = 1 then signal getname
  154.   exit
  155. end
  156.  
  157. dopus request '"Select archiver:" LhA|LZX|ZIP|Cancel'
  158. select
  159. when RC = 0 then
  160.   exit
  161. when RC = 1 then
  162.   archiver = 'LhA'
  163. when RC = 2 then
  164.     archiver = 'LZX'
  165. when RC = 3 then
  166.     archiver = 'ZIP'
  167. end
  168.  
  169. address command
  170.  
  171. test = upper(right(outname,4))
  172. if test = '.LHA'|test='.LZX' then outname = left(outname,length(outname) - 4)
  173.  
  174. 'Copy SYS:Useful/'||archiver||' T:'     /* Change to reflect your path to LhA/LZX */
  175. counter = 1
  176. do until counter > thing
  177.   if archiver = 'LZX' then
  178.     doscom = 'T:'||archiver||' >NIL: -r -e -a -3 u -- ' path||outname name.counter
  179.   else
  180.     if archiver = 'LhA' then
  181.       doscom = 'T:'||archiver||' >NIL: -r -a u ' path||outname name.counter
  182.     else
  183.       doscom = 'T:'||archiver||' >NIL: -r -9 -k -q ' path||outname name.counter
  184.   doscom
  185.   counter = counter + 1
  186. end
  187.  
  188. 'Delete T:infiles.txt quiet'
  189. 'Delete T:'||archiver||' quiet'
  190.  
  191. address value port
  192. mssg = thing||' item'||plural.thing||' archived into'||LF||LF||path||outname||'.'||Lower(archiver)
  193. dopus request '"'mssg'" OK'
  194. exit
  195.  
  196. Lower: procedure   /* The opposite of UPPER, converts to lowercase */
  197.   parse arg text .
  198.   text = BITOR(text,'20'x)
  199. return(text)
  200.